home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_asm / asm_kit / memscan.asm < prev    next >
Assembly Source File  |  1985-02-25  |  2KB  |  152 lines

  1. ;
  2. ;    MEMSCAN--SCANS ENTIRE MEGABYTE OF MEMORY
  3. ;
  4. PMESS    EQU    9H
  5. DISPLAY EQU    2H
  6. DOSCALL EQU    21H
  7. ;
  8. X_SEG    SEGMENT
  9. X_BYTE    DB    ?
  10. X_SEG    ENDS
  11. ;
  12. VAR_AREA    SEGMENT
  13. LINES        DB    ?
  14. DIV_LINE    DB    ?
  15. GP_DIV        DB    ?
  16. HEADER        DB    '        0000     2000     4000     6000'
  17.         DB    '     8000     A000     C000     E000$'
  18. COLON        DB    ': $'
  19. FOOTER        DB    0AH,0DH,'X     X     X     X     X     X     X     X'
  20.         DB    0AH,0DH,'000   400   800   C00   1000  1400  1800  1C00$'
  21. ;
  22. VAR_AREA    ENDS
  23. ;
  24. MEMSCAN     SEGMENT
  25. ;
  26. MAIN        PROC    FAR
  27. ;
  28.         ASSUME    CS:MEMSCAN, DS:VAR_AREA
  29.         ASSUME    ES:X_SEG
  30. ;
  31. START:
  32.         PUSH    DS
  33.         SUB    AX,AX
  34.         PUSH    AX
  35. ;
  36.         MOV    AX,VAR_AREA
  37.         MOV    DS,AX
  38. ;
  39.         MOV    LINES,16
  40.         SUB    AX,AX
  41.         MOV    ES,AX
  42. ;
  43.         CALL    CRLF
  44.         MOV    DX,OFFSET HEADER
  45.         MOV    AH,PMESS
  46.         INT    DOSCALL
  47.         CALL    CRLF
  48. ;
  49. NEW_LINE:
  50.         MOV    BX,ES
  51.         CALL    BINIHEX
  52.         MOV    DX,OFFSET COLON
  53.         MOV    AH,PMESS
  54.         INT    DOSCALL
  55. ;
  56.         MOV    DIV_LINE,8
  57.         MOV    BX,0
  58. ;
  59. NEW_DIV:
  60.         MOV    GP_DIV,8
  61. NEW_GRP:
  62.         MOV    CX,128
  63. NEW_BYTE:
  64.         MOV    AL,[BX + X_BYTE]
  65.         MOV    AH,[BX + X_BYTE + 2]
  66.         AND    AX,7F7FH
  67.         CMP    AL,AH
  68.         JE    NX_BYTE
  69. ;
  70.         MOV    DL,[BX + X_BYTE + 5]
  71.         AND    DL,7FH
  72.         CMP    AL,DL
  73.         JE    NX_BYTE
  74.         CMP    AH,DL
  75.         JE    NX_BYTE
  76. ;
  77.         MOV    DL,'X'
  78.         MOV    AH,DISPLAY
  79.         INT    DOSCALL
  80. ;
  81.         AND    BX,0FC00H
  82.         ADD    BX,1024
  83.         JMP    DONE_GRP
  84. ;
  85. NX_BYTE:
  86.         ADD    BX,8
  87.         DEC    CX
  88.         JNZ    NEW_BYTE
  89.         MOV    DL,'.'
  90.         MOV    AH,DISPLAY
  91.         INT    DOSCALL
  92. DONE_GRP:
  93.         DEC    GP_DIV
  94.         JNZ    NEW_GRP
  95.         MOV    DL,' '
  96.         MOV    AH,DISPLAY
  97.         INT    DOSCALL
  98. ;
  99. DONE_DIV:
  100.         DEC    DIV_LINE
  101.         JNZ    NEW_DIV
  102.         CALL    CRLF
  103.         MOV    AX,ES
  104.         ADD    AX,1000H
  105.         MOV    ES,AX
  106. ;
  107. DONE_LINE:
  108.         DEC    LINES
  109.         JNZ    NEW_LINE
  110. ;
  111.         MOV    DX,OFFSET FOOTER
  112.         MOV    AH,PMESS
  113.         INT    DOSCALL
  114.         RET
  115. ;
  116. MAIN        ENDP
  117. ;
  118. CRLF        PROC    NEAR
  119.         MOV    DL,0DH
  120.         MOV    AH,DISPLAY
  121.         INT    DOSCALL
  122.         MOV    DL,0AH
  123.         MOV    AH,DISPLAY
  124.         INT    DOSCALL
  125.         RET
  126. CRLF        ENDP
  127. ;
  128. BINIHEX     PROC    NEAR
  129.         MOV    CH,4
  130. ROTATE:
  131.         MOV    CL,4
  132.         ROL    BX,CL
  133.         MOV    AL,BL
  134.         AND    AL,0FH
  135.         ADD    AL,30H
  136.         CMP    AL,3AH
  137.         JL    PRINTIT
  138.         ADD    AL,7
  139. ;
  140. PRINTIT:
  141.         MOV    DL,AL
  142.         MOV    AH,DISPLAY
  143.         INT    DOSCALL
  144.         DEC    CH
  145.         JNZ    ROTATE
  146.         RET
  147. BINIHEX     ENDP
  148. ;
  149. MEMSCAN     ENDS
  150. ;
  151.         END    START
  152.